package integracion;

import interfaces.AdministradorLog;
import interfaces.EstadoEntrega;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import dtos.LogDTO;
import dtos.RespuestaDTO;
import entities.Venta;

/**
 * Session Bean implementation class EstadoEntregaBean
 */
@Stateless
public class EstadoEntregaBean implements EstadoEntrega {

	@PersistenceContext
	EntityManager em;
	
	private Logger log;
	
	@EJB
	AdministradorLog adminLog;
	
    /**
     * Default constructor. 
     */
    public EstadoEntregaBean() {
    }

    
    public String registrarEstadoEntrega ( int nroVenta ) {
    	
    	BasicConfigurator.configure();
    	XStream xstream = new XStream(new DomDriver());
    	xstream.alias("resultado", LogDTO.class);
		
    	RespuestaDTO rtaDTO = new RespuestaDTO();
    	Venta v = em.find( Venta.class, nroVenta );

    	String mensaje = "";
    	if ( v == null ){
    		log = Logger.getLogger("La venta no se ha encontrado");
    		rtaDTO.setEstado("ERROR");
    		rtaDTO.setMensaje("La venta no se ha encontrado");
    		mensaje = "La venta no se ha encontrado";
    	}else{
    		v.setEstadoEntrega("ENTREGADA");
    		rtaDTO.setEstado("OK");
    		rtaDTO.setMensaje("Venta nro: " + v.getNroVenta() + " ENTREGADA");
    		mensaje = "Venta nro: " + v.getNroVenta() + " ENTREGADA";
    	}
    	adminLog.enviarLogSegunConfig( mensaje );
    	String xmlLog = xstream.toXML(rtaDTO);
		
    	System.out.println(xmlLog);
		
		System.out.println(log);
		
		return xmlLog;
    }
}
